/*
 * 
 * LegendShop 多用户商城系统
 * 
 *  版权所有,并保留所有权利。
 * 
 */
package com.bblocks.communityInfo.client;


import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;


/**
 * App用于封装查询订单数据.
 */
@Data
@Schema(description="订单Dto")
public class AppOrderDto implements Serializable{

	private static final long serialVersionUID = -2864810122569245142L;

	/** 订单ID **/
	@Schema(description = "订单ID")
	private Long subId;

	/** 商品名称 **/
	@Schema(description = "商品名称")
	private String prodName;
	
	/** 用户ID **/
	@Schema(description = "用户ID")
	private String userId;

	/** 用户名称 **/
	@Schema(description = "用户名称 ")
	private String userName;
	
	/** 下订单的时间 **/
	@Schema(description = "下订单的时间 ")
	private Date subDate;

	/** 支付的时间  **/
	@Schema(description = "支付的时间")
	private Date payDate;
	
	/** 更新时间  **/
	@Schema(description = "更新时间 ")
	private Date updateDate;

	/** 订单号 **/
	@Schema(description = "订单号")
	private String subNumber;
	
	/** 订单商品原价  **/
	@Schema(description = "订单商品原价")
	private Double total;

	/** 订单商品实际价格(运费 折扣 促销) **/
	@Schema(description = "订单商品实际价格(运费 折扣 促销)")
	private Double actualTotal;
	
	/** 支付ID **/
	@Schema(description = "支付ID")
	private Long payId;

	/** 付款类型ID **/
	@Schema(description = "付款类型ID")
	private String payTypeId;

	/** 订单状态 **/
	@Schema(description = "订单状态[待付款: 1 ，待发货：2 ，待收货：3 ，已完成：4 ， 已取消：5]")
	private Integer status;

	/** 支付方式名称 **/
	@Schema(description = "支付方式名称 ")
	private String payTypeName;
	
	/** 其他备注 **/
	@Schema(description = "其他备注")
	private String other;

	/** 商城ID **/
	@Schema(description = "商城ID")
	private Long shopId;
	
	/** 商城名称 **/
	@Schema(description = "商城名称")
	private String shopName;
	
	/** 配送类型  **/
	@Schema(description = "配送类型")
	private String dvyType;
	
	/** 配送方式ID **/
	@Schema(description = "配送方式ID")
	private Long dvyTypeId;
	
	/** 物流单号 **/
	@Schema(description = "物流单号 ")
	private String dvyFlowId;
	
	/** 发票单号 **/
	@Schema(description = "发票单号")
	private Long invoiceSubId;
	
	/** 物流费用 **/
	@Schema(description = "物流费用")
	private Double freightAmount;
	
	/** 给卖家留言 **/
	@Schema(description = "给卖家留言")
	private String orderRemark;
	
	/** 用户订单地址ID **/
	@Schema(description = "用户订单地址ID")
	private Long addrOrderId;
	
	/** 是否需要发票(0:不需要;1:需要) **/
	@Schema(description = "是否需要发票(0:不需要;1:需要)")
	private Integer isNeedInvoice;
	
	/** 支付方式(1:货到付款;2:在线支付) **/
	@Schema(description = "支付方式(1:货到付款;2:在线支付)")
	private Integer payManner;
	
	/** 物流重量(千克) **/
	@Schema(description = "物流重量(千克)")
	private Double weight;
	
	/** 物流体积(立方米) **/
	@Schema(description = "物流体积(立方米)")
	private Double volume;
	
	/** 促销优惠总金额 **/
	@Schema(description = "促销优惠总金额")
	private Double discountPrice;
	
	/** 使用红包支付金额 */
	@Schema(description="使用红包支付金额") 
	private Double redpackOffPrice;
	
	/** 使用优惠券支付金额 */
	@Schema(description="使用优惠券支付金额") 
	private Double couponOffPrice;
	
	/** 分销的佣金总额 **/
	@Schema(description = "分销的佣金总额")
	private Double distCommisAmount;
	
	/** 订单商品总数 **/
	@Schema(description = "订单商品总数")
	private Integer productNums;
	
	/** 发货时间 */
	@Schema(description = "发货时间")
	private Date dvyDate;
	
	/** 完成时间/确认收货时间  **/
	@Schema(description = "完成时间/确认收货时间 ")
	private Date finallyDate;
	
	/** 是否货到付款 **/
	@Schema(description = "是否货到付款")
	private Integer isCod;
	
	/** 是否已经支付 **/
	@Schema(description = "是否已经支付")
	private Integer isPayed;
	
	/** 订单类型[普通订单：NORMAL，秒杀订单：SECKILL  门店订单：SHOP_STORE 预售订单：PRE_SELL 团购：GROUP 拼团：MERGE_GROUP 拍卖；AUCTIONS  示例：subType=“NORMAL”] **/
	@Schema(description = "订单类型[普通订单：NORMAL，秒杀订单：SECKILL  门店订单：SHOP_STORE 预售订单：PRE_SELL 团购：GROUP 拼团：MERGE_GROUP 拍卖；AUCTIONS  示例：subType=“NORMAL”]")
	private String subType; 
	
	/** 用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除 **/
	@Schema(description = "用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除")
	private Integer deleteStatus;
	
	/** 是否提醒过发货  */
	@Schema(description = "是否提醒过发货")
	private boolean remindDelivery;
	
	/** 提醒发货时间  */
	@Schema(description = "提醒发货时间")
	private Date remindDeliveryTime;
	
	/** 订单项列表 **/
	@Schema(description = "订单项列表")
	private List<OrderItemDto> subItems;
	
	/** 用户收货地址  **/
	//@Schema(description = "用户收货地址")
	//private AddressDto addressDto;
	
	/** 物流信息  **/
	//@Schema(description = "物流信息")
	//private DeliveryDto deliveryDto;
	
	/** 退款状态 0:默认,1:在处理,2:处理完成 */
	@Schema(description = "退款状态 0:没有退款退货状态,1:退款退货中,2:退款退货处理完成")
	private Long refundState;
	
	//@Schema(description="用户的订单发票")
	//private InvoiceSub invoiceSub;

	@Schema(description="用于倒计时的时间,待付款时是付款截止时间， 待成团是成团截止倒计时, 待收货时是确认收货截止时间") 
	private Date countDownTime;
	
	@Schema(description="活动ID, 如拼团活动ID")
	private Long activeId;
	
	@Schema(description="团购状态") 
	private Integer groupStatus;
	
	@Schema(description="拼团状态") 
	private Integer mergeGroupStatus;

	@Schema(description="拼团活动, 已开团的团编号")
	private String addNumber;
	
	@Schema(description="拼团成团人数")
	private Integer mergerGroupPeopleNum;
	
	@Schema(description="已参团人数")
	private Integer mergerGroupAlreadyAddNum;
	
	@Schema(description="门店订单提货码")
	private String dlyoPickupCode;	
	
	//@Schema(description="门店信息")
	//private AppStoreDto store;
	
	@Schema(description="订单已调整的金额[负数为减，正数为加需要添加'+'显示]")
	private Double changedPrice;
	
	//预售订单字段 
	/** 支付方式,0:全额,1:定金 */
	@Schema(description="支付方式  0:全额,1:定金") 
	private Integer payPctType; 
	
	/** 定金金额 */
	@Schema(description="定金金额") 
	private java.math.BigDecimal preDepositPrice; 

	/** 尾款金额 */
	@Schema(description="尾款金额 ") 
	private java.math.BigDecimal finalPrice; 
	
	/** 尾款支付开始时间 */
	@Schema(description="尾款支付开始时间 ") 
	private Date finalMStart; 
		
	/** 尾款支付结束时间 */
	@Schema(description="尾款支付结束时间 ") 
	private Date finalMEnd; 
		
	/** 定金支付名称 */
	@Schema(description="定金支付名称 ") 
	private String depositPayName; 
		
	/** 定金支付流水号 */
	@Schema(description="定金支付流水号 ") 
	private String depositTradeNo; 
		
	/** 定金支付时间 */
	@Schema(description="定金支付时间 ") 
	private Date depositPayTime; 
		
	/** 是否支付定金 */
	@Schema(description="是否支付定金 ") 
	private Integer isPayDeposit; 
		
	/** 尾款支付名称 */
	@Schema(description="尾款支付名称 ") 
	private String finalPayName; 
		
	/** 尾款支付时间 */
	@Schema(description="尾款支付时间  ") 
	private Date finalPayTime; 
		
	/** 尾款流水号 */
	@Schema(description="尾款流水号  ") 
	private String finalTradeNo; 
		
	/** 是否支付尾款 */
	@Schema(description="是否支付尾款") 
	private Integer isPayFinal; 
	
	/** 订单自动取消剩余时间（分钟） */
	@Schema(description="订单自动取消剩余时间（分钟）") 
	private Integer orderCancelMinute;

	
}
